package com.brunobas.pontosmart.baseadapter;

import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.brunobas.pontosmart.R;
import com.brunobas.pontosmart.database.DataBaseUtil;
import com.brunobas.pontosmart.database.helper.HorasPontoDataHelper;
import com.brunobas.pontosmart.model.DiaMes;
import com.brunobas.pontosmart.model.HoraPonto;
import com.brunobas.pontosmart.model.MesAno;
import com.brunobas.pontosmart.utils.DateUtil;
import com.brunobas.pontosmart.utils.RegexUtil;
import com.brunobas.pontosmart.utils.Util;

public class DiasMesBaseAdapter extends AbstractBaseAdapter {

	private List<DiaMes> dias;
	
	private MesAno mesAno;
	
	private HorasPontoDataHelper dbHp;
	
	private DiaMes diaMes;
	
	private static final Character NEW_LINE = '\n';
	
	public DiasMesBaseAdapter(Context context, List<DiaMes> dias, MesAno mesAno) {
		super(context);
		
		this.dias = dias;
		this.mesAno = mesAno;
		this.dbHp = DataBaseUtil.getHorasPontoDataHelper(context);
	}

	@Override
	public int getCount() {

		return this.dias.size();
	}

	@Override
	public Object getItem(int position) {

		return this.dias.get(position);
	}

	@Override
	public long getItemId(int position) {

		return 0;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		
		LayoutInflater inflater = Util.getLayoutInflater(this.context);
		
		View layout = (View) inflater.inflate(R.layout.layout_dias_mes_estrutura, null);
		
		this.diaMes = this.dias.get(position);
		
		TextView dia = (TextView) layout.findViewById(R.id.textViewDiaMes);
		
		dia.setText(this.diaMes.toString());
		
		TextView total = (TextView) layout.findViewById(R.id.textViewTotalHoras);
		
		
		calcularTotalHorasDoDIa(total);
		
		convertView = layout;
	
		return convertView;
	}
	
	
	private void calcularTotalHorasDoDIa(TextView textViewTotal) {
		
		List<HoraPonto> listaHoras = this.dbHp.getListaHoraPontoTotal(this.diaMes);
		
		if (listaHoras == null) {
			
			textViewTotal.setText(String.format("%Sh:%Sm", "00", "00"));
			
			return;
		}
		
		int horas = 0;
		int minutos = 0;
		String horasMinutos = null;
		
		for (HoraPonto horaPonto : listaHoras) {
			
			if (horaPonto.getTotalHora() != null) {
				
				horasMinutos = horaPonto.getTotalHora();
				
				horas += RegexUtil.recuperarHoraOuMinuto("[0-9]+h", horasMinutos);
				
				minutos += RegexUtil.recuperarHoraOuMinuto("[0-9]+m", horasMinutos);
			}
		}
		
		horas += minutos / 60;
		minutos = minutos % 60;
		
		if (horas >= 8) {
			
			textViewTotal.setBackgroundResource(R.color.azul_police_strobe);
		}
		
		textViewTotal.setText(DateUtil.retornarHoraFormatada(horas, minutos));
	}
}
